#ifndef _PARSER_H_
#define _PARSER_H_
#include "logic.h"
#include "Storage.h"
#include <stack>

using namespace std;

struct OUTPUT_MESSAGE
{
	vector<string> output_strings;
	COMMAND next_inputtype;
};

struct UNDO_BLOCK
{
	Schedule S;
	COMMAND type;
};

class Parser
{
private:
	ProcessCommands p_command;
	Storage List;
	stack <UNDO_BLOCK> undo_stack;
	vector<int>schedule_index;

	void print(vector<Schedule*>d, OUTPUT_MESSAGE &O);
	
public:
	Parser(){};

	OUTPUT_MESSAGE run(string input);
	OUTPUT_MESSAGE anotherinput(int choice,COMMAND anotherInputType);

	void clear_logic_containers()
	{
		p_command.clear_containers();
	}
	void init_storage(string fileName);
};



#endif